package files

import "gitee.com/kitfast/device-protocol/device"

// 设备端向主控端上传文件，流程如下（设备端主动上传文件，则从 1 开始；否则从 2 开始）：
// 1. 设备端向主控端发送 file-sync 指令
// 2. 主控端向设备端发送 file-upload 指令，告知设备端如何上传
// 3. 设备端按 file-upload 的指示，上传文件
// 4. 主控端保存/处理文件
// 5. 主控端向设备端发送 file-sync-ack 指令以确认，告知设备端上传成功或失败

const (
	FILE_UPLOAD = "file-upload" // 指令：主控端要求设备端按指定方法上传文件
)

// 上传信息：告知设备端如何上传文件
type UploadInfo struct {
	// 上传地址，如 http://example.com/upload 或 ftp://example.com/upload
	Url    string `json:"protocol"`
	Method string `json:"method"` // 上传的方法，如 PUT
	// 上传时设备端必须提供的头部。如：
	// Content-Type 指定内容格式。亦可自定义类型，如多文件 multipart/form-data 或其它私有格式
	// Content-Length 内容长度。如果不确定长度的传输，可参考 http chunk
	// Content-Hash 内容 Hash，可出现多个，值格式为：enc;alg;val
	// Content-Name 文件名
	Headers []string `json:"method"`
}

// 文件上传指令
type FileUpload struct {
	Command string         `json:"cmd"`
	Device  *device.Device `json:"device"`
	Payload *UploadInfo    `json:"payload"`
}
